<?php

include_once 'CtlGeneral.php';

include_once '../entities/Alumno.php';
include_once '../boundaries/gestionarAlumnos/BoundFormularioAlumno.php';

class CtlGestionAlumnos extends CtlGeneral {
    
    public function __construct($param, $files) {
        
        switch ($param['opc']) {
            
            case 'menuPrinc': echo $this->insertarTitulo("Gestionar Alumnos");
                                echo "<br><input type='button' id='regis' name='regis' value='Registrar' onclick=\"ajax('controllers/CtlGestionAlumnos.php', 'frmRegisAlumno', 'vacio', 'contenido')\">";
                                echo $this->listarAlumnos('GA');
                break;
            
            case 'frmRegisAlumno': $this->mostrarBoundFormulario('R', null);
                break;
            
            case 'regisAlumno': $idAlumno = $this->regisAlumno($param);
                    
                if ($idAlumno != false) {

                    echo $this->insertarTitulo("El alumno ha sido registrado");

                    $this->mostrarBoundFormulario('D', $idAlumno);
                } else {

                    echo $this->insertarTitulo("Ocurrio un error al registrar el registro del alumno");

                    $this->listarAlumnos('GA');
                }
                break;
                
            case 'frmDetallesAlumno': $this->mostrarBoundFormulario('D', $param['id']);
                break;
            
            case 'frmModificarAlumno': $this->mostrarBoundFormulario('M', $param['id']);
                break;
            
            case 'modifAlumno': $idAlumno = $this->modifAlumno($param['id'], $param);
                    
                if ($idAlumno != false) {

                    echo $this->insertarTitulo("El alumno ha sido modificado");

                    $this->mostrarBoundFormulario('M', $idAlumno);
                } else {

                    echo $this->insertarTitulo("Ocurrio un error al modificar el registro del alumno");

                    $this->listarAlumnos('GA');
                }
                break;
                
            case 'menuFoto': $this->menuFoto($param['tipo'], $param['idAlumno'], $param['dir']);
                break;
            
            case 'cargarFoto': $this->cargarFoto($param['idAlumno'], $files);
                break;
        }
    }
    
    private function menuFoto ($tipo, $id, $dir) {
        if ($tipo == 'M' && $dir == "") {
            echo "<body style='margin-top: 0px; margin-bottom: 0px;'>
                    <form action='CtlGestionAlumnos.php' method='post' enctype='multipart/form-data' name='file' id='file' target='_self'>
                        Subir Foto
                        <input type='hidden' name='opc' value='cargarFoto' />
                        <input type='hidden' name='idAlumno' value='$id' />
                        <input type='hidden' name='dir' value='$dir' />
                        <input type='file' name='file' /><input type='submit' value='Subir foto'>
                    </form>
                </body>";
        } else  {
            echo "<body style='margin-top: 0px; margin-bottom: 0px;'>
                    ". ( ($dir != "") ? "<img src='../docs/fotos/$dir' width='200' height='125'>" : "Foto no disponible" ) ."<br>
                    ".( $tipo == 'M' ? ("<a href='CtlGestionAlumnos.php?opc=menuFoto&dir=&idAlumno=$id&tipo=M'>Cambiar la foto del alumno</a>") : "" )."</body>";
        }
    }
    
    private function cargarFoto($id, $file) {
        
        //Definimos el tipo de archivo permitido
        $extenPermi = array("pdf", "jpeg", "jpg", "png");
        $temp = explode(".", $file["file"]["name"]);
        $exten = end($temp);

        $nomArch = $file['file']['name'];

        if ($nomArch == "") {
            echo "Debes seleccionar un archivo<br><a href='CtlGestionAlumnos.php?opc=menuFoto&dir=&idAlumno=$id&tipo=M'>Volver a intentar</a>";
            
        //Si el archivo es de un formato no permitido
        } else if (!in_array($exten, $extenPermi)) { 
            
            echo "Tipo de archivo no permitido<br><a href='CtlGestionAlumnos.php?opc=menuFoto&dir=&idAlumno=$id&tipo=M'>Volver a intentar</a>";
        } else {
            
            //Creamos el objeto de tipo profesor y obtenemos sus datos junto con su módulo
            $alumno = new Alumno();
            $alumno = $alumno->obtenerPorId($id);
            
            //$profesor['moprdircartacompro'] == "" ? "" : unlink("../docs/contratosProfe/$profesor[moprdircartacompro]");
            
            //Nombramos el archivo de la sig manera apePatNombreProfeNombre.extensionArchivo
            $nomArch = "$alumno[peapepat]$alumno[peapemat]$alumno[penombre].$exten";

            $destino = "../docs/fotos/$nomArch";

            if (move_uploaded_file($file['file']['tmp_name'], $destino)) {
                
                $alumno = new Alumno(); $alumno->establecerFoto($id, $nomArch);
                
                $this->menuFoto('M', $id, $nomArch);
            } else {
                echo "La foto no pudo ser guardada<br><a href='CtlGestionAlumnos.php?opc=menuFoto&dir=&idAlumno=$id&tipo=M'>Volver a intentar</a>";
            }            
        }
    }
    
    public function modifAlumno ($idAlumno, $param) {
        
        $alumno = new Alumno();
        $alumnoActual = $alumno->obtenerPorId($idAlumno);
        
        $alumno->iniTransaccion();
        
        $alumno->modificar($alumnoActual['alidpersona'], $param['nom'], $param['apePat'], $param['apeMat'], $param['dir']);
        
        //Mandamos los nuevos datos, más el ID del Alumno para que aplique los cambios sobre el alumno con el ID correspondiente
        $alumnoNuevo = $alumno->modificarAlumno($idAlumno, $alumnoActual['alidpersona'], $param['apePat'], $param['apeMat'], (isset($param['numCta']) ? $param['numCta'] : ""), $param['fecNac'], $param['sex'], $param['gradoEstu'], $param['situEstu'], $param['nomGrado'], 
                                    $param['tieneCurNeg'], ($param['tieneCurNeg'] == 'S' ? $param['nomCur'] : ''), $param['tieneTrab'], ($param['tieneTrab'] == 'S' ? $param['areaTrabajo'] : ''), 
                                        (isset($param['nomProy']) ? $param['nomProy'] : ''), (isset($param['nomProy']) ? (isset($param['descProy']) ? $param['descProy'] : '') : ''), 
                                                (isset($param['nomProy']) ? (isset($param['edoProy']) ? $param['edoProy'] : '') : ''), 
                                                    (isset($param['nomProy']) ? (isset($param['tiempProy']) ? $param['tiempProy'] : '') : ''),
                                                    $param['enteCENAPyME']);
        
        if ($alumnoNuevo != false) {
            
            $resulMail = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'm', $param['mail']);
            
            if (isset($param['casa'])) { $resulCasa = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'h', $param['casa']); } else { $resulCasa = true; }
            
            if (isset($param['cel'])) { $resulCel = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'c', $param['cel']); } else { $resulCel = true; }
            
            if (isset($param['oficina'])) { $resulOficc = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'o', $param['oficina']); } else { $resulOficc = true; }
            
            if ($resulMail != false && $resulCasa != false && $resulCel != false && $resulOficc != false) {
                
                $alumno->finTransaccion();
                
                return $alumnoNuevo['alidalumno'];
            } else {
                
                $alumno->rollback();
                
                return false;
            }
            
        } else {
            $alumno->rollback();
            
            return false;
        }
    }
    
    public function regisAlumno ($param) {
        
        $alumno = new Alumno();
        
        $alumno->iniTransaccion();
        
        $idPersona = $alumno->registrar($param['nom'], $param['apePat'], $param['apeMat'], $param['dir']);
        
        $alumnoNuevo = $alumno->registrarAlumno($idPersona, $param['apePat'], $param['apeMat'], (isset($param['numCta']) ? $param['numCta'] : ""), $param['fecNac'], $param['sex'], $param['gradoEstu'], $param['situEstu'], $param['nomGrado'], 
                                    $param['tieneCurNeg'], ($param['tieneCurNeg'] == 'S' ? $param['nomCur'] : ''), $param['tieneTrab'], ($param['tieneTrab'] == 'S' ? $param['areaTrabajo'] : ''), 
                                        (isset($param['nomProy']) ? $param['nomProy'] : ''), (isset($param['nomProy']) ? (isset($param['descProy']) ? $param['descProy'] : '') : ''), 
                                                (isset($param['nomProy']) ? (isset($param['edoProy']) ? $param['edoProy'] : '') : ''), 
                                                    (isset($param['nomProy']) ? (isset($param['tiempProy']) ? $param['tiempProy'] : '') : ''),
                                                    $param['enteCENAPyME']);
        
        if ($alumnoNuevo != false) {
            
            $resulMail = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'm', $param['mail']);
            
            if (isset($param['casa'])) { $resulCasa = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'h', $param['casa']); } else { $resulCasa = true; }
            
            if (isset($param['cel'])) { $resulCel = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'c', $param['cel']); } else { $resulCel = true; }
            
            if (isset($param['oficina'])) { $resulOficc = $alumno->registrarActualizarMedioComunic($alumnoNuevo['alidpersona'], 'o', $param['oficina']); } else { $resulOficc = true; }
            
            if ($resulMail != false && $resulCasa != false && $resulCel != false && $resulOficc != false) {
                
                $alumno->finTransaccion();
                
                return $alumnoNuevo['alidalumno'];
            } else {
                
                $alumno->rollback();
                
                return false;
            }
            
        } else {
            $alumno->rollback();
            
            return false;
        }
    }

    public function mostrarBoundFormulario ($tipo, $idAlumno) {
        
        if ($tipo == 'R') {
            
            new BoundFormularioAlumno('R', null, null);
        } else {
            
            $objeAlum = new Alumno();
            $alumno = $objeAlum->obtenerPorId($idAlumno);
            
            $alumno['mail'] = $objeAlum->obtenerMedio($alumno['peidpersona'], 'm'); $alumno['mail'] = $alumno['mail']['mecomedio'];
            
            $alumno['casa'] = $objeAlum->obtenerMedio($alumno['peidpersona'], 'h'); $alumno['casa'] = $alumno['casa']['mecomedio'];
            
            $alumno['cel'] = $objeAlum->obtenerMedio($alumno['peidpersona'], 'c'); $alumno['cel'] = $alumno['cel']['mecomedio'];
            
            $alumno['oficina'] = $objeAlum->obtenerMedio($alumno['peidpersona'], 'o'); $alumno['oficina'] = $alumno['oficina']['mecomedio'];
            
            new BoundFormularioAlumno($tipo, $alumno);
        }
    }
}

new CtlGestionAlumnos(( isset($_POST['opc']) ? $_POST : $_GET ), $_FILES);
?>